/**
 * 微信支付证书转换工具
 * 
 * 使用方法：
 * 1. 将下载的 apiclient_key.pem 文件放在项目根目录
 * 2. 运行：node convert-wxpay-key.js
 * 3. 复制输出的内容到 config.json 的 privateKey 字段
 */

const fs = require('fs');
const path = require('path');

console.log('='.repeat(60));
console.log('微信支付证书转换工具');
console.log('='.repeat(60));
console.log();

// 证书文件路径
const keyFilePath = path.join(__dirname, 'apiclient_key.pem');

// 检查文件是否存在
if (!fs.existsSync(keyFilePath)) {
  console.error('❌ 错误：找不到 apiclient_key.pem 文件');
  console.log();
  console.log('请将微信支付证书文件 apiclient_key.pem 放在项目根目录下');
  console.log('文件路径应该是：', keyFilePath);
  console.log();
  console.log('如何获取证书文件：');
  console.log('1. 登录微信商户平台：https://pay.weixin.qq.com/');
  console.log('2. 进入"账户中心" → "API安全"');
  console.log('3. 下载"API证书"');
  console.log('4. 解压后找到 apiclient_key.pem 文件');
  console.log();
  process.exit(1);
}

try {
  // 读取证书文件
  console.log('✅ 找到证书文件：', keyFilePath);
  const keyContent = fs.readFileSync(keyFilePath, 'utf8');
  
  // 验证证书格式
  if (!keyContent.includes('-----BEGIN PRIVATE KEY-----')) {
    console.error('❌ 错误：证书格式不正确，缺少 "-----BEGIN PRIVATE KEY-----"');
    console.log();
    console.log('请确认文件是 apiclient_key.pem（私钥文件）');
    console.log('不是 apiclient_cert.pem（证书文件）');
    process.exit(1);
  }
  
  if (!keyContent.includes('-----END PRIVATE KEY-----')) {
    console.error('❌ 错误：证书格式不正确，缺少 "-----END PRIVATE KEY-----"');
    process.exit(1);
  }
  
  console.log('✅ 证书格式验证通过');
  console.log();
  
  // 转换为 JSON 格式
  const jsonKey = JSON.stringify(keyContent);
  
  // 输出结果
  console.log('='.repeat(60));
  console.log('转换结果（复制下面的内容到 config.json 的 privateKey 字段）');
  console.log('='.repeat(60));
  console.log();
  console.log(jsonKey);
  console.log();
  console.log('='.repeat(60));
  console.log();
  
  // 生成完整的配置文件示例
  const configExample = {
    mchid: "您的商户号",
    appid: "您的小程序AppID",
    apiKeyV3: "您的APIv3密钥",
    serial_no: "您的API证书序列号",
    privateKey: keyContent
  };
  
  const configPath = path.join(__dirname, 'wxpay-config-example.json');
  fs.writeFileSync(configPath, JSON.stringify(configExample, null, 2), 'utf8');
  
  console.log('✅ 已生成配置文件示例：', configPath);
  console.log();
  console.log('下一步操作：');
  console.log('1. 打开文件：', configPath);
  console.log('2. 填写其他配置信息（mchid、appid、apiKeyV3、serial_no）');
  console.log('3. 将内容复制到：');
  console.log('   uniCloud-aliyun/cloudfunctions/common/uni-config-center/wxpay-config/config.json');
  console.log('4. 上传云函数');
  console.log();
  
  // 显示证书信息
  const lines = keyContent.split('\n');
  console.log('证书信息：');
  console.log('- 总行数：', lines.length);
  console.log('- 开头：', lines[0]);
  console.log('- 结尾：', lines[lines.length - 1] || lines[lines.length - 2]);
  console.log();
  
  console.log('='.repeat(60));
  console.log('✅ 转换完成！');
  console.log('='.repeat(60));
  
} catch (error) {
  console.error('❌ 错误：', error.message);
  console.log();
  console.log('请检查：');
  console.log('1. 文件是否存在');
  console.log('2. 文件是否可读');
  console.log('3. 文件格式是否正确');
  process.exit(1);
}

